package com.vegetable.modules.service.finance;

import com.vegetable.common.utils.R;
import com.vegetable.modules.entity.finance.dto.PaymentApprovalDTO;

/**
 * 付款审批服务接口
 *
 * @author Qoder
 */
public interface PaymentApprovalService {

    /**
     * 提交付款审批
     *
     * @param paymentId 付款ID
     * @return 结果
     */
    R submitPaymentApproval(Long paymentId);
    
    /**
     * 提交付款审批（包含收款人信息）
     *
     * @param paymentId 付款ID
     * @param approvalDTO 审批信息（包含收款人信息）
     * @return 结果
     */
    R submitPaymentApproval(Long paymentId, PaymentApprovalDTO approvalDTO);

    /**
     * 处理企业微信审批结果
     *
     * @param approvalDTO 审批信息
     * @return 结果
     */
    R handleWxApprovalResult(PaymentApprovalDTO approvalDTO);
    
    /**
     * 验证银行账号是否在addressBook中存在
     *
     * @param customerId 客户ID
     * @param bankAccount 银行账号
     * @return 验证结果
     */
    R validateBankAccount(Long customerId, String bankAccount);
    
    /**
     * 手动拉取付款单的审批情况
     *
     * @param paymentId 付款ID
     * @return 审批情况结果
     */
    R pullPaymentApprovalStatus(Long paymentId);
}